package day07;

import day07.hashMap_hashTable.HashMapAndHashTable;
import day07.hashMap_treeMap.HashMapAndTreeMap;
import day07.linkedHashMap_hashMap.LinkedHashMapAndMap;

/**
 * <>
 * <详细描述>
 *
 * @Author WANG.SONG.
 * @Date 2019/3/1 0001 21:54
 * @see
 */
public class MapTest {
    public static void main(String[] args) {
        /**
         * hashMap
         *< Collections.synchronizedMap()可以实现hashMap线程安全>
         */
        HashMapAndHashTable.hashMap();
        /**hashTable**/
        HashMapAndHashTable.hashTable();

        /**
         *<Collections.synchronizedMap()与ConcurrentHashMap主要区别是
         * Collections.synchronizedMap()和HashTable一样，实现上在调用map所有方法时，
         * 都对整个map进行同步，而ConcurrentHashMap的实现却更加精细，它对map中的所有桶加了锁。
         * 所以，只要要有一个线程访问map，其他线程就无法进入map，而如果一个线程在
         * 访问ConcurrentHashMap某个桶时，其他线程，仍然可以对map执行某些操作。这样，
         * ConcurrentHashMap在性能以及安全性方面，明显比Collections.synchronizedMap()更加有优势。
         * 同时，同步操作精确控制到桶，所以，即使在遍历map时，其他线程试图对map进行数据修改，
         * 也不会抛出ConcurrentModificationException。
         *@param
         *
         *@return
         *@Author WANG.SONG.
         */
        /**ConcurrentHashMap是线程安全的HashMap的实现**/
        HashMapAndHashTable.concurrentHashMap();



        /**treeMap根据key 排序**/
        HashMapAndTreeMap.treeMap();
        /**hashMap不排序**/
        HashMapAndTreeMap.hashMap();

        /**linkedHashMap实现插入有序**/
        LinkedHashMapAndMap.linkedHashMap();
    }
}
